In [1]:
import os
import json
from cog_analysis import analyze_session
from natsort import natsorted

summary = []

base_dir = "../Data_Sailnjord/Maneuvers"

# Parcours tous les dossiers de date
for date_folder in sorted(os.listdir(base_dir)):
    date_path = os.path.join(base_dir, date_folder)

    if not os.path.isdir(date_path):
        continue

    # Parcours tous les dossiers de personne dans chaque date
    for person_folder in sorted(os.listdir(date_path)):
        person_path = os.path.join(date_path, person_folder)

        if not os.path.isdir(person_path):
            continue

        # Parcours tous les dossiers de run dans chaque dossier de personne
        for run_folder in natsorted(os.listdir(person_path)):
            run_path = os.path.join(person_path, run_folder)

            if not os.path.isdir(run_path):
                continue

            # Cherche un fichier CSV dans le run
            csv_files = [f for f in os.listdir(run_path) if f.endswith(".csv")]
            if len(csv_files) != 1:
                print(f"Ignoré: {run_path} (attendu 1 CSV, trouvé {len(csv_files)})")
                continue

            csv_path = os.path.join(run_path, csv_files[0])
            print(f"Analyse: {csv_files[0]} dans {run_path}")
            try:
                intervals = analyze_session(csv_path)
                print(f"✔ Analyse réussie, nombre d'intervalles : {len(intervals)}")
                
                summary.append({
                    "date": date_folder,
                    "person": person_folder,
                    "run": run_folder,
                    "intervals": intervals
                })

            except Exception as e:
                import traceback
                print(f"❌ Erreur dans {run_path} : {type(e).__name__} - {e}")
                traceback.print_exc()


# Sauvegarde du résumé
summary_file = "summary.json"
with open(summary_file, "w") as f:
    json.dump(summary, f, indent=2)

print(f"Résumé complet sauvegardé ({len(summary)} runs)")
Analyse: SenseBoard.csv dans ../Data_Sailnjord/Maneuvers\08_06\Gian\08_06_Run1
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: SenseBoard.csv dans ../Data_Sailnjord/Maneuvers\08_06\Gian\08_06_Run2
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: SenseBoard.csv dans ../Data_Sailnjord/Maneuvers\08_06\Gian\08_06_Run3
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: SenseBoard.csv dans ../Data_Sailnjord/Maneuvers\08_06\Gian\08_06_Run4
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: SenseBoard.csv dans ../Data_Sailnjord/Maneuvers\08_06\Gian\08_06_Run5
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Karl Maeder.csv dans ../Data_Sailnjord/Maneuvers\08_06\Karl\08_06_Run1
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Karl Maeder.csv dans ../Data_Sailnjord/Maneuvers\08_06\Karl\08_06_Run2
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Karl Maeder.csv dans ../Data_Sailnjord/Maneuvers\08_06\Karl\08_06_Run3
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Karl Maeder.csv dans ../Data_Sailnjord/Maneuvers\08_06\Karl\08_06_Run4
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Karl Maeder.csv dans ../Data_Sailnjord/Maneuvers\08_06\Karl\08_06_Run5
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Karl Maeder.csv dans ../Data_Sailnjord/Maneuvers\08_06\Karl\08_06_Run6
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Gian Stragiotti.csv dans ../Data_Sailnjord/Maneuvers\11_06\Gian\11_06_Run1
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Gian Stragiotti.csv dans ../Data_Sailnjord/Maneuvers\11_06\Gian\11_06_Run2
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: SenseBoard.csv dans ../Data_Sailnjord/Maneuvers\11_06\Gian\11_06_Run3
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: SenseBoard.csv dans ../Data_Sailnjord/Maneuvers\11_06\Gian\11_06_Run4
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: SenseBoard.csv dans ../Data_Sailnjord/Maneuvers\11_06\Gian\11_06_Run5
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Karl Maeder.csv dans ../Data_Sailnjord/Maneuvers\11_06\Karl\11_06_Run1
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Karl Maeder.csv dans ../Data_Sailnjord/Maneuvers\11_06\Karl\11_06_Run2
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Karl Maeder.csv dans ../Data_Sailnjord/Maneuvers\11_06\Karl\11_06_Run3
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Karl Maeder.csv dans ../Data_Sailnjord/Maneuvers\11_06\Karl\11_06_Run4
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Karl Maeder.csv dans ../Data_Sailnjord/Maneuvers\11_06\Karl\11_06_Run5
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Analyse: Karl Maeder.csv dans ../Data_Sailnjord/Maneuvers\11_06\Karl\11_06_Run6
No description has been provided for this image
No description has been provided for this image
✔ Analyse réussie, nombre d'intervalles : 1
Résumé complet sauvegardé (22 runs)
In [2]:
print(json.dumps(summary, indent=2))
[
  {
    "date": "08_06",
    "person": "Gian",
    "run": "08_06_Run1",
    "intervals": [
      {
        "start_time": 1749369697.661,
        "end_time": 1749369707.661,
        "duration": 10.0,
        "avg_SOG": 14.707070707070704,
        "SOG_variation": 0.9418016305337475,
        "stability_score": 0.672637863890963,
        "boat_name": "SenseBoard"
      }
    ]
  },
  {
    "date": "08_06",
    "person": "Gian",
    "run": "08_06_Run2",
    "intervals": [
      {
        "start_time": 1749370455.755,
        "end_time": 1749370465.755,
        "duration": 10.0,
        "avg_SOG": 22.81600000000001,
        "SOG_variation": 1.1553756658736283,
        "stability_score": 0.6582600162193185,
        "boat_name": "SenseBoard"
      }
    ]
  },
  {
    "date": "08_06",
    "person": "Gian",
    "run": "08_06_Run3",
    "intervals": [
      {
        "start_time": 1749370981.354,
        "end_time": 1749370991.354,
        "duration": 10.0,
        "avg_SOG": 25.611000000000004,
        "SOG_variation": 0.9611540832338862,
        "stability_score": 0.7778514561575225,
        "boat_name": "SenseBoard"
      }
    ]
  },
  {
    "date": "08_06",
    "person": "Gian",
    "run": "08_06_Run4",
    "intervals": [
      {
        "start_time": 1749371575.247,
        "end_time": 1749371585.247,
        "duration": 10.0,
        "avg_SOG": 24.384615384615383,
        "SOG_variation": 0.3892600397962809,
        "stability_score": 0.9341413910828347,
        "boat_name": "SenseBoard"
      }
    ]
  },
  {
    "date": "08_06",
    "person": "Gian",
    "run": "08_06_Run5",
    "intervals": [
      {
        "start_time": 1749372243.953,
        "end_time": 1749372253.953,
        "duration": 10.0,
        "avg_SOG": 20.477999999999994,
        "SOG_variation": 0.9402965360765595,
        "stability_score": 0.6979908660163111,
        "boat_name": "SenseBoard"
      }
    ]
  },
  {
    "date": "08_06",
    "person": "Karl",
    "run": "08_06_Run1",
    "intervals": [
      {
        "start_time": 1749368828.959,
        "end_time": 1749368838.959,
        "duration": 10.0,
        "avg_SOG": 13.36930693069307,
        "SOG_variation": 0.9718788581152925,
        "stability_score": 0.7407038757237728,
        "boat_name": "Karl Maeder"
      }
    ]
  },
  {
    "date": "08_06",
    "person": "Karl",
    "run": "08_06_Run2",
    "intervals": [
      {
        "start_time": 1749369595.256,
        "end_time": 1749369605.256,
        "duration": 10.0,
        "avg_SOG": 0.0,
        "SOG_variation": 0.0,
        "stability_score": 1.0,
        "boat_name": "Karl Maeder"
      }
    ]
  },
  {
    "date": "08_06",
    "person": "Karl",
    "run": "08_06_Run3",
    "intervals": [
      {
        "start_time": 1749370272.559,
        "end_time": 1749370282.559,
        "duration": 10.0,
        "avg_SOG": 18.647000000000002,
        "SOG_variation": 0.6304487739425436,
        "stability_score": 0.8701341032530209,
        "boat_name": "Karl Maeder"
      }
    ]
  },
  {
    "date": "08_06",
    "person": "Karl",
    "run": "08_06_Run4",
    "intervals": [
      {
        "start_time": 1749370856.263,
        "end_time": 1749370866.263,
        "duration": 10.0,
        "avg_SOG": 17.735849056603776,
        "SOG_variation": 0.549858142413058,
        "stability_score": 0.8668252600852491,
        "boat_name": "Karl Maeder"
      }
    ]
  },
  {
    "date": "08_06",
    "person": "Karl",
    "run": "08_06_Run5",
    "intervals": [
      {
        "start_time": 1749371455.25,
        "end_time": 1749371465.25,
        "duration": 10.0,
        "avg_SOG": 20.49423076923077,
        "SOG_variation": 0.2217695867853076,
        "stability_score": 0.9425659652059947,
        "boat_name": "Karl Maeder"
      }
    ]
  },
  {
    "date": "08_06",
    "person": "Karl",
    "run": "08_06_Run6",
    "intervals": [
      {
        "start_time": 1749372115.657,
        "end_time": 1749372125.657,
        "duration": 10.0,
        "avg_SOG": 21.417857142857144,
        "SOG_variation": 0.5400697405662759,
        "stability_score": 0.9042970919566947,
        "boat_name": "Karl Maeder"
      }
    ]
  },
  {
    "date": "11_06",
    "person": "Gian",
    "run": "11_06_Run1",
    "intervals": [
      {
        "start_time": 1749644515.257,
        "end_time": 1749644525.257,
        "duration": 10.0,
        "avg_SOG": 17.85,
        "SOG_variation": 0.18311038136792207,
        "stability_score": 0.887000829331072,
        "boat_name": "Gian Stragiotti"
      }
    ]
  },
  {
    "date": "11_06",
    "person": "Gian",
    "run": "11_06_Run2",
    "intervals": [
      {
        "start_time": 1749645595.26,
        "end_time": 1749645605.26,
        "duration": 10.0,
        "avg_SOG": 20.033962264150944,
        "SOG_variation": 0.207497355151277,
        "stability_score": 0.9387863224202455,
        "boat_name": "Gian Stragiotti"
      }
    ]
  },
  {
    "date": "11_06",
    "person": "Gian",
    "run": "11_06_Run3",
    "intervals": [
      {
        "start_time": 1749646331.956,
        "end_time": 1749646341.956,
        "duration": 10.0,
        "avg_SOG": 12.839603960396042,
        "SOG_variation": 0.8947713906826472,
        "stability_score": 0.7815465815145274,
        "boat_name": "SenseBoard"
      }
    ]
  },
  {
    "date": "11_06",
    "person": "Gian",
    "run": "11_06_Run4",
    "intervals": [
      {
        "start_time": 1749646875.357,
        "end_time": 1749646885.357,
        "duration": 10.0,
        "avg_SOG": 18.58118811881188,
        "SOG_variation": 0.9391179767512842,
        "stability_score": 0.763371296114111,
        "boat_name": "SenseBoard"
      }
    ]
  },
  {
    "date": "11_06",
    "person": "Gian",
    "run": "11_06_Run5",
    "intervals": [
      {
        "start_time": 1749647455.259,
        "end_time": 1749647465.259,
        "duration": 10.0,
        "avg_SOG": 1.0634615384615385,
        "SOG_variation": 0.7145624867786667,
        "stability_score": 0.8930570080943446,
        "boat_name": "SenseBoard"
      }
    ]
  },
  {
    "date": "11_06",
    "person": "Karl",
    "run": "11_06_Run1",
    "intervals": [
      {
        "start_time": 1749644635.257,
        "end_time": 1749644645.257,
        "duration": 10.0,
        "avg_SOG": 21.14905660377359,
        "SOG_variation": 0.22499798418706715,
        "stability_score": 0.9506802405719211,
        "boat_name": "Karl Maeder"
      }
    ]
  },
  {
    "date": "11_06",
    "person": "Karl",
    "run": "11_06_Run2",
    "intervals": [
      {
        "start_time": 1749645371.855,
        "end_time": 1749645381.855,
        "duration": 10.0,
        "avg_SOG": 18.138613861386137,
        "SOG_variation": 0.651148262230608,
        "stability_score": 0.7700871254910471,
        "boat_name": "Karl Maeder"
      }
    ]
  },
  {
    "date": "11_06",
    "person": "Karl",
    "run": "11_06_Run3",
    "intervals": [
      {
        "start_time": 1749646015.257,
        "end_time": 1749646025.257,
        "duration": 10.0,
        "avg_SOG": 18.836538461538463,
        "SOG_variation": 0.3389886030554837,
        "stability_score": 0.9259038742176654,
        "boat_name": "Karl Maeder"
      }
    ]
  },
  {
    "date": "11_06",
    "person": "Karl",
    "run": "11_06_Run4",
    "intervals": [
      {
        "start_time": 1749646675.257,
        "end_time": 1749646685.257,
        "duration": 10.0,
        "avg_SOG": 19.15660377358491,
        "SOG_variation": 0.2685498334805095,
        "stability_score": 0.9250332263651599,
        "boat_name": "Karl Maeder"
      }
    ]
  },
  {
    "date": "11_06",
    "person": "Karl",
    "run": "11_06_Run5",
    "intervals": [
      {
        "start_time": 1749647337.456,
        "end_time": 1749647347.456,
        "duration": 10.0,
        "avg_SOG": 18.104,
        "SOG_variation": 0.969736659711898,
        "stability_score": 0.868814283003886,
        "boat_name": "Karl Maeder"
      }
    ]
  },
  {
    "date": "11_06",
    "person": "Karl",
    "run": "11_06_Run6",
    "intervals": [
      {
        "start_time": 1749648055.26,
        "end_time": 1749648065.26,
        "duration": 10.0,
        "avg_SOG": 17.620754716981132,
        "SOG_variation": 0.20225506608282626,
        "stability_score": 0.9091588961385519,
        "boat_name": "Karl Maeder"
      }
    ]
  }
]
In [ ]: